<?php
/**
 * Created by JetBrains PhpStorm.
 * User: BLB
 * Date: 23-6-11
 * Time: 14:29
 * To change this template use File | Settings | File Templates.
 */
require_once(Config::acquire('Model', null, 'model'));


class Question extends Model
{

   /**
     * initialiseren variabelen
     */
    private $id;
    private $omschrijving;
    private $diensten;
    private $workaround;
    private $oplossing;


     /**
     * aanmaken van de vriabelen
     */
    public function __construct($id, $omschrijving, $diensten, $workaround, $oplossing )
    {
        $this->id = $id;
        $this->omschrijving = $omschrijving;
        $this->diensten = $diensten;
        $this->workaround = $workaround;
        $this->oplossing = $oplossing;
    }


     /**
     * Query voor deleten van de gegevens uit de gegeven tabel
     */
    public function delete()
    {
        SQL::execute("DELETE FROM `question` WHERE `question_ID` = {$this->id}");
    }

      /**
     * gegevens naar een array schrijven.
     */
    public function toArray()
    {
        return array(
            "ID" => $this->id,
            "Omschrijving" => $this->omschrijving,
            "Dienst" => $this->diensten,
            "Workaround" => $this->workaround,
            "Oplossing" => $this->oplossing,


        );
    }

     /**
     * Query voor het updaten van de betreffende tabel
     */
    public function update()
    {
        if (!is_null($this->id)) {
            SQL::execute("UPDATE `question`
                      SET `question_omschrijving`  = '{$this->omschrijving}'
                          `Dienst_ID` = '{$this->diensten}'
                          `Workaround_ID` = '{$this->workaround}'
                          `Oplossing_ID` = '{$this->oplossing}'
                         WHERE `question_ID` ={$this->id}");
        } else {
            SQL::execute("INSERT INTO `question` (
                            `question_ID`, `question_omschrijving`, `Dienst_ID`, `Workaround_ID`, `Oplossing_ID`)
                             VALUES (NULL ,
                              '{$this->omschrijving}', '{$this->diensten}', '{$this->workaround}', '{$this->oplossing}')");
        }
    }

     /**
     * aanmaken van een nieuw item
     */
    public static function create($id, $omschrijving, $diensten, $workaround, $oplossing)
    {
        return new Question($id, $omschrijving, $diensten, $workaround, $oplossing);
    }



    /*
     * lezen van de gegvens van 1 enkel item
     */
    public static function read($id)
    {
        if (!is_null($id)) {
            $question = SQL::query("SELECT * FROM `question` WHERE `question_ID` = $id");


            if ($question->isValid()) {
                return Question::create(
                    $question->fetchField('question_ID'),
                    $question->fetchField('question_omschrijving'),
                    $question->fetchField('Dienst_ID'),
                    $question->fetchField('Workaround_ID'),
                    $question->fetchField('Oplossing_ID')

                );

            }
        }

        return null;
    }


     /**
     * Lezen van de gegevens in een tabel
     */
    public static function readAll()
    {
        $list = array();
        $question = SQL::query("SELECT * FROM `question` ORDER BY `question_ID`");
        while ($question->isValid()) {
            $list[] = Question::create(
                $question->fetchField('question_ID'),
                $question->fetchField('question_omschrijving'),
                $question->fetchField('Dienst_ID'),
                $question->fetchField('Workaround_ID'),
                $question->fetchField('Oplossing_ID'));

            $question->next();
        }
        return $list;
    }

     /**
     * Setters & getters
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    public function getId()
    {
        return $this->id;
    }

    public function setOmschrijving($omschrijving)
    {
        $this->omschrijving = $omschrijving;
    }

    public function getOmschrijving()
    {
        return $this->omschrijving;
    }
}